package com.monster.valid.regex;

import lombok.Getter;

import java.util.regex.Pattern;

/**
 * 正则表达式常量
 *
 * @author kuang
 */
public enum RegexEnum {
    /**
     * 中文
     */
    CHINESE("VALID_CHINESE", Pattern.compile("^[\\u4e00-\\u9fa5]+$"), "请输入中文"),
    /**
     * 英文
     */
    ENGLISH("VALID_ENGLISH", Pattern.compile("^[A-Za-z]+$"), "请输入英文"),
    /**
     * 大写字母
     */
    ENGLISH_BIG("VALID_ENGLISH_BIG", Pattern.compile("^[A-Z]+$"), "请输入大写字母"),
    /**
     * 小写字母
     */
    ENGLISH_SMALL("VALID_ENGLISH_SMALL", Pattern.compile("^[a-z]+$"), "请输入小写字母"),
    /**
     * 中文加英文
     */
    CHINESE_ENGLISH("VALID_CHINESE_ENGLISH", Pattern.compile("^[\\u4e00-\\u9fa5A-Za-z]+$"), "请输入中文汉字和英文字母"),
    /**
     * 中文加带大写字母
     */
    CHINESE_ENGLISH_BIG("VALID_CHINESE_ENGLISH_BIG", Pattern.compile("^[\\u4e00-\\u9fa5A-Z]+$"), "请输入中文汉字和大写字母"),
    /**
     * 中文加小写字母
     */
    CHINESE_ENGLISH_SMALL("VALID_CHINESE_ENGLISH_SMALL", Pattern.compile("^[\\u4e00-\\u9fa5a-z]+$"), "请输入中文汉字和小写字母"),
    /**
     * 数字
     */
    NUMBER("VALID_NUMBER", Pattern.compile("^[0-9]+$"), "请输入数字"),
    /**
     * 中文加数字
     */
    CHINESE_NUMBER("VALID_CHINESE_NUMBER", Pattern.compile("^[\\u4e00-\\u9fa50-9]+$"), "请输入中文汉字和数字"),
    /**
     * 英文加数字
     */
    ENGLISH_NUMBER("VALID_ENGLISH_NUMBER", Pattern.compile("^[A-Za-z0-9]+$"), "请输入英文和数字"),
    /**
     * 中文加英文加数字
     */
    CHINESE_ENGLISH_NUMBER("VALID_CHINESE_ENGLISH_NUMBER", Pattern.compile("^[\\u4e00-\\u9fa5A-Za-z0-9]+$"), "请输入中文汉字,英文以及数字"),
    /**
     * 中文加大写字母加数字
     */
    CHINESE_NUMBER_ENGLISH_BIG("VALID_CHINESE_NUMBER_ENGLISH_BIG", Pattern.compile("^[\\u4e00-\\u9fa5A-Z0-9]+$"), "请输入中文汉字,大写字母以及数字"),
    /**
     * 中文加小写字母加数字
     */
    CHINESE_NUMBER_ENGLISH_SMALL("VALID_CHINESE_NUMBER_ENGLISH_SMALL", Pattern.compile("^[\\u4e00-\\u9fa5a-z0-9]+$"), "请输入中文汉字,小写字母以及数字"),
    /**
     * 手机号码验证
     */
    MOBILE("VALID_MOBILE", Pattern.compile("^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\\d{8}$"), "请输入正确的手机号"),
    /**
     * 邮箱
     */
    EMAIL("VALID_EMAIL", Pattern.compile("^([a-zA-Z]|[0-9])(\\w|\\-)+@[a-zA-Z0-9]+\\.([a-zA-Z]{2,4})$"), "请输入正确的邮箱");
    /**
     * 提示的code
     */
    @Getter
    String code;

    /**
     * 检测的正则表达式
     */
    @Getter
    Pattern pattern;

    /**
     * 检测错误的提示信息
     */
    @Getter
    String message;

    RegexEnum(String code, Pattern pattern, String message) {
        this.code = code;
        this.pattern = pattern;
        this.message = message;
    }
}
